//
// Created by weiyixing on 25-9-11.
// 修复版本 - 正确的scvCameraCore使用方法
//

#include "opencv2/opencv.hpp"
#include "scvCameraCore.h"
#include <iostream>

int main() {
    // 创建相机实例（修复：去掉括号，这是正确的对象创建方式）
    scvCameraCore camera;
    
    // 初始化相机
    SCVErrorCode result = camera.initialize();
    if (result != SCVErrorCode::SUCCESS) {
        std::cerr << "初始化失败: " << scvCameraCore::getErrorString(result) << std::endl;
        return -1;
    }
    
    // 启动数据流
    result = camera.startStreams();
    if (result != SCVErrorCode::SUCCESS) {
        std::cerr << "启动数据流失败: " << scvCameraCore::getErrorString(result) << std::endl;
        camera.shutdown();
        return -1;
    }
    
    cv::namedWindow("color", cv::WINDOW_NORMAL);
    cv::namedWindow("depth", cv::WINDOW_NORMAL);

    while (true) {
        cv::Mat colorMat, depthMat;
        // 修复：使用正确的对象调用方法，而不是临时对象
        SCVErrorCode code = camera.getAlignColorDepthMat(colorMat, depthMat);

        if (code == SCVErrorCode::SUCCESS && !colorMat.empty() && !depthMat.empty()) {
            cv::imshow("color", colorMat);
            
            // 深度图转换为8位用于显示
            cv::Mat depth8bit;
            cv::convertScaleAbs(depthMat, depth8bit, 255.0 / 5000.0);
            cv::Mat depthColor;
            cv::applyColorMap(depth8bit, depthColor, cv::COLORMAP_JET);

            // 显示伪彩色深度图
            cv::imshow("depth_pseudocolor", depthColor);
        }
        
        int key = cv::waitKey(1) & 0xFF;
        if (key == 27) {  // ESC键退出
            break;
        }
    }
    
    // 清理资源
    cv::destroyAllWindows();
    camera.stopStreams();
    camera.shutdown();
    
    return 0;
}